
EZER            =0
BAT_BOST        =1
BI_BOST         =2
EZ_HAMASEI      =4
HELBIDEA        =8
BEREHALAKOA     =16
AZKEN_BOST      =32
BAT_HAMAR       =64
ORDENA_BEREZIA  =128
ETIKETADUNA     =256
ERLATIBOA       =512

aginduak = [('ld',  BAT_BOST+HELBIDEA ) ,\
            ('ldd',  BAT_BOST+BI_BOST+ORDENA_BEREZIA+ERLATIBOA) ,\
            ('ldx',  BAT_BOST+BI_BOST+HELBIDEA+ORDENA_BEREZIA) ,\
            \
            ('st',  BAT_BOST+HELBIDEA ) ,\
            ('std',  BAT_BOST+BI_BOST+ORDENA_BEREZIA+ERLATIBOA) ,\
            ('stx',  BAT_BOST+BI_BOST+HELBIDEA+ORDENA_BEREZIA) ,\
            \
            ('mova',  BAT_BOST+HELBIDEA) ,\
            ('mov',  BAT_BOST+BI_BOST+EZ_HAMASEI) ,\
            ('movi',  BAT_BOST+BEREHALAKOA) ,\
            \
            ('add',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('addi',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('sub',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('subi',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('mul',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('muli',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('div',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('divi',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('shr',  BAT_BOST+BI_BOST) ,\
            ('shl',  BAT_BOST+BI_BOST) ,\
            \
            ('and',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('andi',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('or',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('ori',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('xor',  BAT_BOST+BI_BOST+AZKEN_BOST) ,\
            ('xori',  BAT_BOST+BI_BOST+BEREHALAKOA) ,\
            \
            ('jmp',  ETIKETADUNA) ,\
            ('beq',  BAT_BOST+ETIKETADUNA) ,\
            ('bne',  BAT_BOST+ETIKETADUNA) ,\
            ('bls',  BAT_BOST+ETIKETADUNA) ,\
            ('ble',  BAT_BOST+ETIKETADUNA) ,\
            ('bgt',  BAT_BOST+ETIKETADUNA) ,\
            ('bge',  BAT_BOST+ETIKETADUNA) ,\
            \
            ('retm',  EZ_HAMASEI) ,\
            ('call',  ETIKETADUNA) ,\
            ('ret',  EZ_HAMASEI) ,\
            \
            ('push',  BAT_BOST+EZ_HAMASEI) ,\
            ('pop',  BAT_BOST+EZ_HAMASEI) ,\
            \
            ('in', EZ_HAMASEI) ,\
            ('out', EZ_HAMASEI) ,\
            ('outs', EZER) ,\
            ('outm', HELBIDEA+BAT_HAMAR) ,\
            ('outrm', EZER)]
#Ordenean idatzita
keys = [i[0] for i in aginduak]
def agindua(x):
    return aginduak[keys.index(x)][1]

def bat_bost(x):
    return x%2

def bi_bost(x):
    return (x/2)%2

def ez_hamasei(x):
    return (x/4)%2

def helbidea(x):
    return (x/8)%2

def berehalakoa(x):
    return (x/16)%2

def azken_bost(x):
    return (x/32)%2

def bat_hamar(x):
    return (x/64)%2

def ordena_berezia(x):
    return (x/128)%2

def etiketaduna(x):
    return (x/256)%2

def erlatiboa(x):
    return (x/512)%2


